#include"Thread.hpp"
#include<vector>

void test()
{
    int cnt = 5;
    while(cnt--)
    {
        std::cout << "新线程运行了" <<std::endl;
        std::cout.flush();
        sleep(1);
    }
}

int main()
{
    //单个线程
    Thread t(test , "thread-1");
    t.Start();
    t.Join();
    std::cout << "主线程结束" << std::endl;
    return 0;
}

// #include<iostream>
// #include<pthread.h>
// #include<unistd.h>
// #include<cstring>
// #include<string.h>
// #include<sys/syscall.h>

// #define get_lwp_id() syscall(SYS_gettid)
//系统调用号

// int main()
// {
//     int a = 0;
//     scanf("%d" , &a);
//     printf("%d\n" , a);
//     return 0;
// }

//线程局部存储，__thread 是编译器提供的功能，__thread 修饰一个变量可以让此变量为全局但是对于每个线程来说又是私有的；使用：获取lwp
// int gval = 100;
// __thread int lwpid;

// void* start_routine(void* args)
// {
//     //获取lwp
//     lwpid = get_lwp_id();
//     std::string name = static_cast<const char*>(args);
//     while(true)
//     {
//         // printf("我是新线程:%s , gval: %d , &gval: %p\n" , name.c_str(),gval ,&gval);
//         printf("我是新线程:%s , lwpid: %d , &lwpid: %p\n" , name.c_str(),lwpid ,&lwpid);
//         // gval++;
//         sleep(1);
//         // break;
//     }

//     return (void*)11;
// }

// int main()
// {
//     lwpid = get_lwp_id();
//     //创建新线程
//     pthread_t tid;
//     int n = pthread_create(&tid , nullptr , start_routine , (void*)"thread-1");
//     if(n)
//     {
//         strerror(n);
//         exit(1);
//     }

//     while(true)
//     {
//         printf("我是主线程，等待新线程id:0x%lx 成功, lwpid: %d , &lwpid: %p\n" , tid ,lwpid ,&lwpid);
//         sleep(1);
//     }
//     //等待新线程
//     void *ret=nullptr;
//     int m = pthread_join(tid , &ret);
//     if(m)
//     {
//         strerror(n);
//         exit(1);
//     }
//     else if(!m)
//     {
//         // printf("我是主线程，等待新线程id:0x%lx 成功，%lld , gval: %d , &gval: %p\n" , tid , (long long)ret ,gval ,&gval);
//     }

//     return 0;
// }